﻿using Adnc.Application.Shared.Dtos;
using Adnc.Application.Shared.Services;
using MoBaoPay.Model.Request;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using WYT.Pay.Application.Contracts.Dtos.Mobao;
using WYT.Pay.Application.Contracts.Dtos.Payment;

namespace WYT.Pay.Application.Contracts.Services
{
    /// <summary>
    /// 支付服务
    /// </summary>
    public interface IMoBaoAppService : IAppService
    {
        /// <summary>
        /// 获取微信支付信息
        /// </summary>
        /// <returns></returns>
        Task<AppSrvResult<WechatPayResponse>> GetWXPaymentInfor(long userid, SimpleInputDto<long> input);

        /// <summary>
        /// 墨宝回调通知
        /// </summary>
        /// <param name="verify"></param>
        /// <returns></returns>
        Task<AppSrvResult<bool>> NotifyVerify(MoBaoNotifyInput verify);

        /// <summary>
        /// 用户提现到银行卡
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<bool> UserWithdrawal(WithdrawalDto input);

        /// <summary>
        /// 银行卡绑定
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<AppSrvResult<bool>> BindBankCard(long userId, BindCardDto input);

        /// <summary>
        /// 银行卡解绑
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="Id"></param>
        /// <returns></returns>
        Task<AppSrvResult> UnbindBankCard(long userId, long Id);

        /// <summary>
        /// 获取用户银行卡列表
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task<AppSrvResult<List<BankCardDto>>> GetBankCarList(long userId);
        /// <summary>
        /// 用户设置默认银行卡
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="Id"></param>
        /// <returns></returns>
        Task<AppSrvResult<Boolean>> DefaultBankCardAsync(long userId, long Id);

        /// <summary>
        /// 获取用户默认银行卡
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        Task<AppSrvResult<BankCardDto>> GetDefaultBankCard(long userId);

        /// <summary>
        /// 根据ID获取银行卡信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<AppSrvResult<BankCardDto>> GetBankCardinfor(long id);
    }
}
